<!--
 * @Author: Zhouxin 2201_75539691@noreply.gitcode.com
 * @Date: 2024-11-24 22:48:27
 * @LastEditors: Zhouxin 2201_75539691@noreply.gitcode.com
 * @LastEditTime: 2024-11-25 15:39:55
 * @FilePath: \2024.11 .24-day11-作用域\test.html
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // var x = 20;
        // function fn1() {
        //     console.log(x); //这里打印值是多少?
        // }
        // x = 30;
        // function fn2() {
        //     var x = 1;
        //     fn1();
        // }
        // x = 40;

        // fn2();

        // function fn() {
        //     var x = y = 10;
        // }
        // fn();
        // console.log(y);
        // console.log(x);

        // function fn() {
        //     console.log(x);
        // }
        // fn();

        // function fn1() {
        //     console.log(x);
        // }
        // function fn2() {
        //     var x;
        //     x = 1;
        //     fn1();
        // }
        // var x;
        // x = 20;
        // x = 30;
        // x = 40;
        // fn2();
        // var x=1;



        // function fn1() {
        //     console.log(x);
        // }
        // function fn2() {
        //     var x;
        //     x = 1;
        //     fn1();
        // }
        // var x;
        // x = 20;
        // x = 30;
        // x = 40;
        // fn2();



        // function fn() {
        //     if (x) {
        //         var x = 30;
        //     }
        //     console.log(x);//30
        // }
        // var x;
        // x = 20;
        // fn();
        // console.log(x);//20\




        // function fn() {
        //     if (x) {
        //         var x = 30;
        //     }
        //     console.log(x);//30
        // }
        // var x;
        // x = 20;
        // fn();
        // console.log(x);//20

        // function fun(param) {
        //     console.log(param);//这里打印值是多少?
        //     var param = function () {
        //         console.log(1);
        //     }
        //     console.log(param);//这里打印值是多少?
        // }
        // fun(5);

        // function fun(param) {
        //     console.log(param);//undefined
        //     param = function () {
        //         console.log(1);
        //     }
        //     console.log(param);//函数体
        // }
        // fun(5);
        // var foo = 1;
        // function bar() {
        //     function foo() { }
        //     foo = 10;
        //     console.log(foo);//这里打印值是多少?
        // }
        // bar();
        // console.log(foo);//这里打印值是多少?

        // var x;
        // function x() {
        //     x = 40;
        // }
        // console.log(x);//函数体
        // x = function () {
        //     x = 90;
        // }
        // x();
        // x = 30;
        // console.log(x);//30


        // var x;
        // function fn1() {
        //     console.log(x);
        // }
        // function fn2() {
        //     var x;
        //     x = 1;
        //     fn1();
        // }
        // x = 20;
        // x = 30;
        // x = 40;
        // fn2();


        // var x = 20;

        // function fn() {
        //     if (x) {
        //         var x = 30;
        //     }
        //     console.log(x); // 这里打印值是多少？
        // }

        // fn();
        // console.log(x); // 这里打印值是多少？


        // var x; // 全局变量声明提升，初始值为 undefined
        // function fn() {
        //     var x; // 局部变量声明提升，初始值为 undefined

        //     if (x) {
        //         x = 30; // 不会执行，因为 x 是 undefined，条件为 false
        //     }
        //     console.log(x); // 输出 undefined
        // }

        // // 执行阶段
        // x = 20; // 全局变量赋值
        // fn();   // 调用函数 fn，进入局部作用域
        // console.log(x); // 输出 20



        // function fun(param) {
        //     console.log(param); // 这里打印值是多少？
        //     var param = function () {
        //         console.log(1);
        //     };
        //     console.log(param); // 这里打印值是多少？
        // }

        // fun(5);


        // function fun(param) {
        //     // 参数 `param` 被提升，作为函数的局部变量，初始值为传递的参数值 5
        //     console.log(param); // 输出 5
        //     param = function () { // 赋值操作覆盖了参数的值
        //         console.log(1);
        //     };
        //     console.log(param); // 输出函数体
        // }

        // // 执行阶段
        // fun(5);




        // var foo = 1;

        // function bar() {
        //     function foo() { }
        //     foo = 10;
        //     console.log(foo); // 这里打印值是多少？
        // }

        // bar();
        // console.log(foo); // 这里打印值是多少？


        // var foo; // 全局变量声明，初始值 undefined
        // function bar() {
        //     function foo() { } // 局部变量 foo，初始值为函数
        //     foo = 10;         // 覆盖局部变量 foo 的值
        //     console.log(foo); // 输出 10
        // }

        // // 执行阶段
        // foo = 1; // 全局变量赋值
        // bar();   // 调用 bar 函数
        // console.log(foo); // 输出 1



        function fn() {
            var a = b = 3;
        }

        console.log(b);//这里打印值是多少?
        console.log(a);//这里打印值是多少?
    </script>
</body>

</html>